diff --git a/system/codeigniter/CodeIgniter.php b/system/codeigniter/CodeIgniter.php
index 4ac0382..a4f18b0 100644
--- a/system/codeigniter/CodeIgniter.php
+++ b/system/codeigniter/CodeIgniter.php
@@ -145,7 +145,7 @@
 if ( ! class_exists($class)
 	OR $method == 'controller'
 	OR substr($method, 0, 1) == '_' 
-	OR in_array($method, get_class_methods('Controller'))
+	OR in_array($method, get_class_methods('Controller'), TRUE)
 	)
 {
 	show_404();
diff --git a/system/database/DB_active_rec.php b/system/database/DB_active_rec.php
index eb9f14a..1fa4f95 100644
--- a/system/database/DB_active_rec.php
+++ b/system/database/DB_active_rec.php
@@ -125,7 +125,7 @@
 		{
 			$type = strtoupper(trim($type));
 
-			if ( ! in_array($type, array('LEFT', 'RIGHT', 'OUTER', 'INNER', 'LEFT OUTER', 'RIGHT OUTER')))
+			if ( ! in_array($type, array('LEFT', 'RIGHT', 'OUTER', 'INNER', 'LEFT OUTER', 'RIGHT OUTER'), TRUE))
 			{
 				$type = '';
 			}
@@ -390,7 +390,7 @@
 	{
 		if (trim($direction) != '')
 		{
-			$direction = (in_array(strtoupper(trim($direction)), array('ASC', 'DESC', 'RAND()'))) ? ' '.$direction : ' ASC';
+			$direction = (in_array(strtoupper(trim($direction)), array('ASC', 'DESC', 'RAND()'), TRUE)) ? ' '.$direction : ' ASC';
 		}
 		
 		$this->ar_orderby[] = $orderby.$direction;
diff --git a/system/database/DB_driver.php b/system/database/DB_driver.php
index d25135e..94db84b 100644
--- a/system/database/DB_driver.php
+++ b/system/database/DB_driver.php
@@ -726,8 +726,8 @@
 		}
 		else
 		{
-			$args = (func_num_args() > 1) ? array_shift(func_get_args()) : null;
-			
+			$args = (func_num_args() > 1) ? array_splice(func_get_args(), 1) : null;
+
 			return call_user_func_array($function, $args); 
 		}
 	}
diff --git a/system/helpers/typography_helper.php b/system/helpers/typography_helper.php
index 6a54952..65924f9 100644
--- a/system/helpers/typography_helper.php
+++ b/system/helpers/typography_helper.php
@@ -275,13 +275,13 @@
 			$one_before = substr($str, $start+$current-1, 1);
 			$one_after = substr($str, $start+$current+2, 1);
 			
-			if ( ! in_array($one_after, $space) && $one_after != "<")
+			if ( ! in_array($one_after, $space, TRUE) && $one_after != "<")
 			{
 				$str = str_replace(	$one_before."\"'".$one_after,
 									$one_before."&#8220;&#8216;".$one_after,
 									$str);
 			}
-			elseif ( ! in_array($one_before, $space) && (in_array($one_after, $space) OR $one_after == '<'))
+			elseif ( ! in_array($one_before, $space, TRUE) && (in_array($one_after, $space, TRUE) OR $one_after == '<'))
 			{
 				$str = str_replace(	$one_before."\"'".$one_after,
 									$one_before."&#8221;&#8217;".$one_after,
@@ -302,13 +302,13 @@
 			$one_before = substr($str, $start+$current-1, 1);
 			$one_after = substr($str, $start+$current+2, 1);
 			
-			if ( in_array($one_before, $space) && ! in_array($one_after, $space) && $one_after != "<")
+			if ( in_array($one_before, $space, TRUE) && ! in_array($one_after, $space, TRUE) && $one_after != "<")
 			{
 				$str = str_replace(	$one_before."'\"".$one_after,
 									$one_before."&#8216;&#8220;".$one_after,
 									$str);
 			}
-			elseif ( ! in_array($one_before, $space) && $one_before != ">")
+			elseif ( ! in_array($one_before, $space, TRUE) && $one_before != ">")
 			{
 				$str = str_replace(	$one_before."'\"".$one_after,
 									$one_before."&#8217;&#8221;".$one_after,
@@ -323,7 +323,7 @@
 		{
 			for ($i=0, $s=sizeof($matches['0']); $i < $s; ++$i)
 			{
-				if ( ! in_array($matches['1'][$i], $space) && ! in_array($matches['3'][$i], $space))
+				if ( ! in_array($matches['1'][$i], $space, TRUE) && ! in_array($matches['3'][$i], $space, TRUE))
 				{
 					$str = str_replace(	$matches['0'][$i],
 										$matches['1'][$i]."&#8220;".$matches['2'][$i]."&#8221;".$matches['3'][$i],
@@ -336,7 +336,7 @@
 		{
 			for ($i=0, $s=sizeof($matches['0']); $i < $s; ++$i)
 			{
-				if ( ! in_array($matches['1'][$i], $space) && ! in_array($matches['3'][$i], $space))
+				if ( ! in_array($matches['1'][$i], $space, TRUE) && ! in_array($matches['3'][$i], $space, TRUE))
 				{
 					$str = str_replace(	$matches['0'][$i],
 										$matches['1'][$i]."&#8216;".$matches['2'][$i]."&#8217;".$matches['3'][$i],
@@ -357,7 +357,7 @@
 			$one_before = substr($str, $start+$current-1, 1);
 			$one_after = substr($str, $start+$current+1, 1);
 			
-			if ( ! in_array($one_before, $space) && ! in_array($one_after, $space))
+			if ( ! in_array($one_before, $space, TRUE) && ! in_array($one_after, $space, TRUE))
 			{
 				$str = str_replace(	$one_before."'".$one_after,
 									$one_before."&#8217;".$one_after,
@@ -380,9 +380,9 @@
 			$two_before = substr($str, $start+$current-2, 1);
 			$two_after = substr($str, $start+$current+3, 1);
 			
-			if (( ! in_array($one_before, $space) && ! in_array($one_after, $space))
+			if (( ! in_array($one_before, $space, TRUE) && ! in_array($one_after, $space, TRUE))
 				OR
-				( ! in_array($two_before, $space) && ! in_array($two_after, $space) && $one_before == ' ' && $one_after == ' ')
+				( ! in_array($two_before, $space, TRUE) && ! in_array($two_after, $space, TRUE) && $one_before == ' ' && $one_after == ' ')
 				)
 			{
 				$str = str_replace(	$two_before.$one_before."--".$one_after.$two_after,
@@ -413,13 +413,13 @@
 			$one_before = substr($str, $start+$current-1, 1);
 			$one_after = substr($str, $start+$current+1, 1);
 			
-			if ( ! in_array($one_after, $space))
+			if ( ! in_array($one_after, $space, TRUE))
 			{
 				$str = str_replace(	$one_before.'"'.$one_after,
 									$one_before."&#8220;".$one_after,
 									$str);
 			}
-			elseif( ! in_array($one_before, $space))
+			elseif( ! in_array($one_before, $space, TRUE))
 			{
 				$str = str_replace(	$one_before."'".$one_after,
 									$one_before."&#8221;".$one_after,
@@ -440,13 +440,13 @@
 			$one_before = substr($str, $start+$current-1, 1);
 			$one_after = substr($str, $start+$current+1, 1);
 			
-			if ( ! in_array($one_after, $space))
+			if ( ! in_array($one_after, $space, TRUE))
 			{
 				$str = str_replace(	$one_before."'".$one_after,
 									$one_before."&#8216;".$one_after,
 									$str);
 			}
-			elseif( ! in_array($one_before, $space))
+			elseif( ! in_array($one_before, $space, TRUE))
 			{
 				$str = str_replace(	$one_before."'".$one_after,
 									$one_before."&#8217;".$one_after,
diff --git a/system/libraries/Calendar.php b/system/libraries/Calendar.php
index 8c7d95a..8cf1517 100644
--- a/system/libraries/Calendar.php
+++ b/system/libraries/Calendar.php
@@ -48,7 +48,7 @@
 	function CI_Calendar()
 	{		
 		$this->obj =& get_instance();
-		if ( ! in_array('calendar_lang'.EXT, $this->obj->lang->is_loaded))
+		if ( ! in_array('calendar_lang'.EXT, $this->obj->lang->is_loaded, TRUE))
 		{
 			$this->obj->lang->load('calendar');
 		}
@@ -458,7 +458,7 @@
 			}
 			else
 			{
-				if (in_array($val, $today))
+				if (in_array($val, $today, TRUE))
 				{
 					$this->temp[$val] = $this->temp[str_replace('_today', '', $val)];
 				}
diff --git a/system/libraries/Config.php b/system/libraries/Config.php
index 108c94a..26770cc 100644
--- a/system/libraries/Config.php
+++ b/system/libraries/Config.php
@@ -63,7 +63,7 @@
 	{
 		$file = ($file == '') ? 'config' : str_replace(EXT, '', $file);
 	
-		if (in_array($file, $this->is_loaded))
+		if (in_array($file, $this->is_loaded, TRUE))
 		{                
 			return TRUE;
 		}
diff --git a/system/libraries/Controller.php b/system/libraries/Controller.php
index f00a726..ff914d1 100644
--- a/system/libraries/Controller.php
+++ b/system/libraries/Controller.php
@@ -239,7 +239,7 @@
 		}
 		
 		$obj =& get_instance();
-		if (in_array($name, $obj->_ci_models))
+		if (in_array($name, $obj->_ci_models, TRUE))
 		{
 			return;
 		}		
@@ -350,7 +350,7 @@
 		
 		foreach ($autoload['libraries'] as $item)
 		{
-			if ( ! in_array($item, $exceptions))
+			if ( ! in_array($item, $exceptions, TRUE))
 			{
 				$this->_ci_load_class($item);
 			}
@@ -566,7 +566,7 @@
 		
 		if (class_exists('Scaffolding')) return;
 			
-		if ( ! in_array($this->uri->segment(3), array('add', 'insert', 'edit', 'update', 'view', 'delete', 'do_delete')))
+		if ( ! in_array($this->uri->segment(3), array('add', 'insert', 'edit', 'update', 'view', 'delete', 'do_delete'), TRUE))
 		{
 			$method = 'view';
 		}
diff --git a/system/libraries/Email.php b/system/libraries/Email.php
index 5b991d1..55edd62 100644
--- a/system/libraries/Email.php
+++ b/system/libraries/Email.php
@@ -467,7 +467,7 @@
 	 */	
 	function set_protocol($protocol = 'mail')
 	{ 
-		$this->protocol = ( ! in_array($protocol, $this->_protocols)) ? 'mail' : strtolower($protocol);
+		$this->protocol = ( ! in_array($protocol, $this->_protocols, TRUE)) ? 'mail' : strtolower($protocol);
 	}
   	// END set_protocol()
   	
@@ -564,7 +564,7 @@
 	function _get_protocol($return = true)
 	{
 		$this->protocol = strtolower($this->protocol);
-		$this->protocol = ( ! in_array($this->protocol, $this->_protocols)) ? 'mail' : $this->protocol;
+		$this->protocol = ( ! in_array($this->protocol, $this->_protocols, TRUE)) ? 'mail' : $this->protocol;
 		
 		if ($return == true) 
 			return $this->protocol;
@@ -584,7 +584,7 @@
 	{		
 		$this->_encoding = ( ! in_array($this->_encoding, $this->_bit_depths)) ? '7bit' : $this->_encoding;
 		
-		if ( ! in_array($this->charset, $this->_base_charsets)) 
+		if ( ! in_array($this->charset, $this->_base_charsets, TRUE)) 
 			$this->_encoding = "8bit";
 			
 		if ($return == true) 
diff --git a/system/libraries/Image_lib.php b/system/libraries/Image_lib.php
index 18e3253..ca1d747 100644
--- a/system/libraries/Image_lib.php
+++ b/system/libraries/Image_lib.php
@@ -398,7 +398,7 @@
 		// Allowed rotation values		
 		$degs = array(90, 180, 270, 'vrt', 'hor');	
 	
-		if ($this->rotation_angle == '' OR ! in_array($this->rotation_angle, $degs))
+		if ($this->rotation_angle == '' OR ! in_array($this->rotation_angle, $degs, TRUE))
 		{
 			$this->set_error('imglib_rotation_angle_required');
 			return FALSE;       	
diff --git a/system/libraries/Language.php b/system/libraries/Language.php
index 41dab46..dabfd41 100644
--- a/system/libraries/Language.php
+++ b/system/libraries/Language.php
@@ -54,7 +54,7 @@
 	{	
 		$langfile = str_replace(EXT, '', str_replace('_lang.', '', $langfile)).'_lang'.EXT;
 		
-		if (in_array($langfile, $this->is_loaded))
+		if (in_array($langfile, $this->is_loaded, TRUE))
 		{
 			return;
 		}
diff --git a/system/libraries/Unit_test.php b/system/libraries/Unit_test.php
index d3e1513..78b92ed 100644
--- a/system/libraries/Unit_test.php
+++ b/system/libraries/Unit_test.php
@@ -57,7 +57,7 @@
 		if ($this->active == FALSE)
 			return;
 			
-		if ($expected !== 0 AND in_array($expected, array('is_string', 'is_bool', 'is_true', 'is_false', 'is_int', 'is_numeric', 'is_float', 'is_double', 'is_array', 'is_null')))
+		if (in_array($expected, array('is_string', 'is_bool', 'is_true', 'is_false', 'is_int', 'is_numeric', 'is_float', 'is_double', 'is_array', 'is_null'), TRUE))
 		{
 			$expected = str_replace('is_float', 'is_double', $expected);
 			$result = ($expected($test)) ? TRUE : FALSE;	
diff --git a/system/libraries/Upload.php b/system/libraries/Upload.php
index 091c6c3..37fccdf 100644
--- a/system/libraries/Upload.php
+++ b/system/libraries/Upload.php
@@ -454,7 +454,7 @@
                            );
     
 
-		return (in_array($this->file_type, $img_mimes)) ? TRUE : FALSE;
+		return (in_array($this->file_type, $img_mimes, TRUE)) ? TRUE : FALSE;
     }
 	
 	// --------------------------------------------------------------------
@@ -479,7 +479,7 @@
     	
     		if (is_array($mime))
     		{
-    			if (in_array($this->file_type, $mime))
+    			if (in_array($this->file_type, $mime, TRUE))
     			{
     				return TRUE;
     			}
diff --git a/system/libraries/Validation.php b/system/libraries/Validation.php
index 80ee6a5..7db67a3 100644
--- a/system/libraries/Validation.php
+++ b/system/libraries/Validation.php
@@ -187,7 +187,7 @@
 			$ex = explode('|', $rules);
 
 			// Is the field required?  If not, if the field is blank  we'll move on to the next text
-			if ( ! in_array('required', $ex) AND strpos($rules, 'callback_') === FALSE)
+			if ( ! in_array('required', $ex, TRUE) AND strpos($rules, 'callback_') === FALSE)
 			{
 				if ( ! isset($_POST[$field]) OR $_POST[$field] == '')
 				{
@@ -206,7 +206,7 @@
 			 */
 			if ( ! isset($_POST[$field]))
 			{			
-				if (in_array('isset', $ex) OR in_array('required', $ex))
+				if (in_array('isset', $ex, TRUE) OR in_array('required', $ex))
 				{
 					if ( ! isset($this->_error_messages['isset'])) 
 					{
@@ -268,7 +268,7 @@
 					$result = $this->obj->$rule($_POST[$field], $param);	
 					
 					// If the field isn't required and we just processed a callback we'll move on...
-					if ( ! in_array('required', $ex) AND $result !== FALSE)
+					if ( ! in_array('required', $ex, TRUE) AND $result !== FALSE)
 					{
 						continue 2;
 					}
diff --git a/system/libraries/Xmlrpc.php b/system/libraries/Xmlrpc.php
index f907854..4cb16f7 100644
--- a/system/libraries/Xmlrpc.php
+++ b/system/libraries/Xmlrpc.php
@@ -854,7 +854,7 @@
 		else
 		{
 			// not top level element: see if parent is OK
-			if (!in_array($this->xh[$the_parser]['stack'][0], $this->valid_parents[$name]))
+			if (!in_array($this->xh[$the_parser]['stack'][0], $this->valid_parents[$name], TRUE))
 			{
 				$this->xh[$the_parser]['isf'] = 2;
 				$this->xh[$the_parser]['isf_reason'] = "XML-RPC element $name cannot be child of ".$this->xh[$the_parser]['stack'][0];
